#pragma once

#include "action.h"
#include "../node/node.h"

OPEN_JLIB_NS


struct RemoveSelf : public ImmediateAction {
  void apply () override;
  bool init (bool cleanup = true);
protected:
  bool _cleanup;
};


struct SwitchFlags : public ImmediateAction {
  void apply () override;
  bool init (u64 flags, s32 action);
protected:
  u64 _flags;
  s32 _action;
};


struct StepOrder : public ImmediateAction {
  void apply () override;
  bool init (s64 order);
protected:
  s64 _order;
};


struct DrawOrder : public ImmediateAction {
  void apply () override;
  bool init (s64 order);
protected:
  s64 _order;
};


struct Position : public ImmediateAction {
  void apply () override;
  bool init (Vec3 position);
protected:
  Vec3 _position;
};


struct Rotation : public ImmediateAction {
  void apply () override;
  bool init (Vec3 rotation);
protected:
  Vec3 _rotation;
};


struct Scale : public ImmediateAction {
  void apply () override;
  bool init (Vec3 scale);
protected:
  Vec3 _scale;
};


CLOSE_JLIB_NS

